# https://leetcode-cn.com/problems/valid-parentheses/  有效括号
"""
给定一个只包括 '('，')'，'{'，'}'，'['，']' 的字符串 s ，判断字符串是否有效。

有效字符串需满足：

左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序闭合。

示例 1：
输入：s = "()"
输出：true

示例2：
输入：s = "()[]{}"
输出：true

示例3：
输入：s = "(]"
输出：false

示例4：
输入：s = "([)]"
输出：false

示例5：
输入：s = "{[]}"
输出：true

提示：
1 <= s.length <= 10的4次方
s 仅由括号 '()[]{}' 组成
"""

inputStr = input("请输入包含(，)，{，}，[，] 的字符串:")


def isVaild(s: str):
    dictConfig = {'(': ')', '[': ']', '{': '}'}
    stack = []
    result = False
    for i in s:
        val = dictConfig.get(i, '0')
        if val != '0':
            stack.append(val)
        else:
            if len(stack) == 0:
                result = False
                break
            else:
                pop = stack.pop()  # 左面的
                if pop == i:
                    result = True
                else:
                    result = False
                    break

    if len(stack) == 0:
        return result
    else:
        return False


print("input string '{}' is {}".format(inputStr, 'valid' if isVaild(inputStr) else 'inValid'))
